package com.ddxz.middleground.master.service;

import com.ddxz.middleground.master.dto.MasterHeader;
import com.ddxz.middleground.master.dto.dept.DeptInfo;
import com.ddxz.middleground.master.util.MasterData;
import com.ddxz.tool.web.dto.DdxzResponse;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/7/26
 */

public interface DepartmentService extends MasterData {
    /**
     * 分页检索部门清单
     *
     * @param header 请求头信息
     * @return 树形结构组织的部门清单
     */
    DdxzResponse deptList(MasterHeader header, String keyword);

    /**
     * 获取部门详情
     *
     * @param deptId 部门标识
     * @param header 请求头
     * @return 部门详情
     */
    DdxzResponse deptDetail(String deptId, MasterHeader header);

    /**
     * 保存部门信息
     *
     * @param header  请求头部信息
     * @param deptReq 部门信息
     * @return 保存部门的标识
     */
    DdxzResponse deptSave(MasterHeader header, DeptInfo deptReq);

    /**
     * 删除指定部门，如果该部门下存在用户或子部门则不允许删除
     *
     * @param header 请求头信息
     * @param deptId 部门标识
     * @return 删除部门是否成功
     */
    DdxzResponse deptDelete(MasterHeader header, String deptId);

    /**
     * 移动部门位置
     *
     * @param deptId    部门标识
     * @param direction 移动方向
     * @param header    请求头部信息
     * @return 是否移动成功
     */
    DdxzResponse deptMove(String deptId, Integer direction, MasterHeader header);
}
